<?php
namespace app\api\validate;
use think\Validate;
use think\Exception;
use think\Request;
use app\lib\exception\ParameterException;
 /**

* 文件用途描述:这是验证层的基类 所有验证类均要继承此类

* @date: 2018年1月4日 上午10:59:32

* @author: 孙洪亮

*/
class BaseValidate extends Validate
{
    public function goCheck(){
        //获取http传入的参数
        $param=Request::instance()->param();
        //对这些参数作检验
        $result=$this->batch()->check($param);
        if(!$result){
            //如果返回值为false则将错误信息抛出
            $e = new ParameterException([
                'msg'=>$this->getError()
            ]);
          //  $e->msg = $this->getError();
            throw  $e;
//            $error=$this->getError();“
//            throw new Exception($error);
        }else {
            //返回值正确
            return true;
        }
    }
    /**

     * 函数用途描述:自定义验证方法，用来检验传入参数是否为正整数如果不是返回提示信息

     * @param: $value,$rule='',$data='',$field='字段名如'id'

     * @return:正确返回true 错误返回自定义信息

     */
    protected function isPositiveInteger($value,$rule='',$data='',$field=''){
        if(is_numeric($value) && is_int($value+0) &&($value+0)>0){
            return true;
        }else {
            return false;
        }
    }

    //判断传值是否为空
    protected function isNotEmpty($value, $rule='', $data='', $field='')
    {
        if (empty($value)) {
            return false;
        } else {
            return true;
        }
    }

    protected function isMobile($value)
    {
        $rule = '^1(3|4|5|7|8)[0-9]\d{8}$^';
        $result = preg_match($rule, $value);
        if ($result) {
            return true;
        } else {
            return false;
        }
    }

    public function getDataByRule($arrays)
    {
        if (array_key_exists('user_id', $arrays) |
            array_key_exists('uid', $arrays)) {
            // 不允许包含user_id或者uid，防止恶意覆盖user_id外键
            throw new ParameterException([
                'msg' => '参数中包含有非法的参数名user_id或者uid'
            ]);
        }
        $newArray = [];
        foreach ($this->rule as $key => $value) {
            $newArray[$key] = $arrays[$key];
        }
        return $newArray;
    }

}

